Docs about rtgmaster PPC ======================== First of all: Sorry that the "real" Docs are not completely done yet :) Work is in Progress :) As now PowerPC Boards are available for the Amiga Computers, it will be interesting of creating games that will run on these Boards. The problem is, the current software available for PPC Boards does not feature PPC Native Graphics Functions. rtgmaster PPC will support such functions. Before i go into detail i have to tell some things about how the Amiga PowerPC Control Software works principially. Actually, there are TWO software systems, one called ppc.library being shipped with the Boards, and one called WarpUP being available as Freeware (Reminds a bit of CyberGraphX and Picasso96, doesn't it ?). If you ran a program that used ppc.library, and now want to run a WarpUP program, you have to reboot (and vice versa). I included the V27 version of rtgmaster (which was without PPC Code) so that people who use the ppc.library quite frequently, still can use rtgmaster.library (at least the 68k Part). 68k and PPC part ================ New for both: - Added RtgBobSystem (Soft-sprites...) Have a look at the example in the Devdocs Directory (Thanks to Rady Marusa for both the Bob Functions and the Demo :) ) - Changed CopyRtgPixelArray (in a backward compatible way, to support AGA Support without c2p...) * the Planar Copy under AGA is now fully functional (the function does Planar Copy under AGA, Chunky Copy under GFX Board, so you can do AGA Support without c2p, if you do not want c2p... you need two sets of graphics files then... if you want to use c2p, use CopyRtgBlit instead, it does c2p for AGA) * Blit Width/Destination Width don't have to be the same any longer. Destination Width/Height is always that of the Screen. Source Width has to be the same like Destination Width, but it is possible to copy only parts of the Buffer to the Destination, by using Source Offsets and smaller Width/Height. - Changed CopyRtgBlit (in a backward compatible way, due to user wishes... if you don't need the new features you won't have to change your code !!!) - C Part of the thing is now StormC instead of SAS/C (more system-conform Init-Code also...) - Fat/Mixed Binary (runs on PPC and on 68k Amigas !!!) Masked Parameter: 0: GfxBoard: Chunky Copy, AGA: c2p, Please use only Fullscreen c2p, not all c2p Modules support Not-Fullscreen-c2p. To do Fullscreen c2p simply set All Offsets to 0, all Width/Height to Screenwidth/Screenheight. 1: GfxBoard: Chunky Copy, No pixel will be overwritten with color 0. Not available for AGA. 2: The same like 0, but also works with Fastram Buffers. Performs Chunky-Copy for both GFX Boards and AGA. 3: The same like 1, but also works with Fastram Buffers. Performs Chunky-Copy with color-0-restriction for both GFX Boards and AGA. - rtg_MouseMove sends IDCMP_MOUSEMOVE messages additionally - rtg_DeltaMove sends IDCMP_MOUSEMOVE messages with Delta-Values. For EGS, which does not support this feature, the same like rtg_MouseMove. - rtg_Workbench: If you give this tag a parameter of LUT8 (512) rtgmaster opens a Workbench Window instead of a screen (slower, and on EGS it still opens a screen... on all other WB Emulations and ECS/AGA it works, though). Possibly later versions will support other Color Depths, also (currently only 1-8 Bit is supported). - rtg_PubScreenName: If used together with rtg_Workbench, the WB Window opens on a Public Screen, instead of the WB. Locking the PubScreen is not needed, rtgmaster does this already. Note: rtg_MouseMove/rtg_DeltaMove do not work with the PPC Versions of the Message functions. Use the 68k Functions with Context-Switch, if you need these tags. Also the PPC Versions do not send the timer values for IntuiMessages... The ppc.library<->WarpUP Discussion =================================== I am very sorry that i have to tell about this whole sad discussion. But i fear i HAVE to tell some words about it... I am sorry to Phase 5 that this text won't let their software look good. But as to game coding (what rtgmaster is intended mainly for) i am interest in EFFICIENCY. And for that i have to use WarpUP. Like most other PPC Software products that are in developpement do... Now, why does WarpUP exist at all ? Why a second software ? (I tell at this place, that rtgmaster PPC uses WarpUP, like probably ANY bigger PPC Application asides from Wildfire does). - A contextswitch always starts a completely new task on ppc.library - The 68k<->PPC Switches on ppc.library are slower than on WarpUP. - ppc.library Software is quite complicated to code... even if it is only a "Hello, World" program. More complicated programs are VERY complicated to do. - Only the WarpUP-using Compiler StormC deals with Context-Switches AUTOMATICALLY. - Overall, the performance of WarpUP is much better, the usability too. - AFAIK, only WarpUP features Fat Binary, Mixed Binary and PPC Shared Libs. (At least for the Version of ppc.library i saw last, this was true). I need all these three features for rtgmaster PPC. - WarpUP uses the AmigaDOS Executable Format, while ppc.library uses the Format of the Linux OS - I had really BAD experiences with the stability of ppc.library... sometimes a program suddently stopped to work. Partially this seems to have to do with certain programs having problems with ppc.library updates, sometimes they failed without an update... one more reason for WarpOS... I have to tell here, we have REALLY to be grateful to Phase 5 for creating the PowerUP Hardware. But they should have left the software part to Haage&Partner. Sorry, if i tell this that bluntly. Especially if you want to code a performance intensive game i only can recommend you to use WarpUP. Not only will the speed be better. You also will need much less knowledge to create PPC Applications. You can even create applications that run on both 68k and PPC very easy. Portability is the key :) Sometimes it is said, that ppc.library would support Multiprocessoring, what WarpUP would not. This is wrong. WarpUP supports Multiprocessoring (but you have to create the PROTOCOL for the CPU communication yourselves). This is, because with the given PowerUP Hardware, running PPC and 68k parallel will SLOW DOWN your program, not SPEED UP it. With future Hardware that might be different, but not with the existing PowerUP Boards. And Sam Jordan, the coder of WarpUP already said, he would enhance the Multiprocessoring support in case such hardware appears. Also Haage&Partner will support ANY Hardware manufacturer with WarpUP who wants to do a PPC Board. Not only the Phase 5 Hardware. So, as rtgmaster PPC uses WarpUP, what does this mean ? If you intend to use ppc.library, you should install the 68k Version of rtgmaster. Programs using the PPC functions of rtgmaster won't run then, of course. Alternatively you can simply install WarpUP V7. It provides compatibility with ppc.library, but it uses the same slow and problematic functions like ppc.library (because of that it is compatible...). When i tested rtgmaster PPC with powerpc.library V7 and ppc.library, though, i got a crash at startup, probably caused by the way ELF-Format does stack-handling, like i was told. I am not sure, if this is fixed with ppc.library V45, but to tell the truth, i don't care that much. If it does not run with ppc.library, try rtgmaster V27. Most new features of rtgmaster V30 are PPC-features, which are only usable with WarpUP. How does the concept of rtgmasterPPC work ? =========================================== rtgmaster PPC is a Mixed Shared Library, which means, that it has functions in 68k, and functions in PPC. On a 68k system, you should ONLY use the 68k functions, on a PowerUP system both can be used. Every rtgmaster function exists in both 68k and PPC, but not all of them are PPC Native. Some of those PPC functions (currently nearly all) simply call a Context-Switch and execute the function on 68k. You SHOULD USE the function CheckPPCCommand() to find out which functions are available in "true PPC code". To use the functions, for 68k you have to use the protos and the pragma-file (for SAS/C: pragmas-file). For PPC you only have to include the protos-File (works only with StormC PowerUP, in case other compilers supporting WarpUP appear, they will be supported, too, of course. And it works also with StormPowerASM, of course, and shold run with pASM - did not try it yet, just downloaded it- . List of true PPC functions: CS means that the PPC function exists, but is not a true PPC function. Instead it performs a context-switch to the 68k function. - means that not even this exists. I will fix this as soon as possible. Remember, this is yet a preview only. In case of - an empty function will be performed. rtgP96.library rtgCGX.library rtgAMI.library rtgEGS.library ============== ============== ============== ============== PPCCCopyRtgBlit PPCCopyRtgBlit PPCCopyRtgBlit - PPCLockRtgScreen PPCLockRtgScreen PPCLockRtgScreen - PPCUnlockRtgScreen PPCUnlockRtgScreen PPCUnlockRtgScreen - PPCGetBufAdr PPCGetBufAdr PPCGetBufAdr - PPCCopyRtgPixelArray PPCCopyRtgPixelArray - - PPCRtgSetTextMode PPCRtgSetTextMode PPCRtgSetTextMode - PPCRtgSetTextModeRGB PPCRtgSetTextModeRGB PPCRtgSetTextModeRGB - PPCRtgInitRDCMP PPCRtgInitRDCMP PPCRtgInitRDCMP - PPCopyRtgBlit PPCCopyRtgBlit PPCCopyRtgBlit - PPCRtgScreenAtFront PPCRtgScreenAtFront PPCRtgScreenAtFront - PPCDrawRtgLine PPCDrawRtgLine - - PPCWriteRtgPixel PPCWriteRtgPixel - - PPCRtgWaitRDCMP PPCWaitRDCMP PPCWaitRDCMP - PPCRtgGetMsg PPCRtgGetMsg PPCRtgGetMsg - PPCRtgReplyMsg PPCRtgReplyMsg PPCRtgReplyMsg - PPCFillRtgRect PPCFillRtgRect CS - PPCFillRtgRectRGB PPCFillRtgRectRGB No 24 Bit for AGA - PPCWriteRtgPixelArrayPPCWriteRtgPixelArray- - PPCCallRtgC2P PPCCallRtgC2P PPCCallRtgC2P - All other PPC functions simply perform a contextswitch to 68k. Steffen Haeuser